<?php
namespace Sfsn\Core\Controller;

class AutoLoad
{
    public static $loadDir = [];    
    
    /**
     * 注册自动加载
     */
    public static function registerAutoload($config = [])
    {
        self::$loadDir = array_merge(self::$loadDir,$config);
        // 注册AUTOLOAD方法
        spl_autoload_register(__NAMESPACE__ .'\AutoLoad::load');
    }
    
    /**
     * 实现类的自动加载
     * @param unknown $classname
     * @return boolean
     */
    public static function load($classname)
    {
        $loadDir = self::$loadDir;
        $separator = DIRECTORY_SEPARATOR;//系统路径分隔符
        // 处理路径格式，namespace\classname 改为 namespace/classname符合路径格式
        $classname = str_replace('\\', $separator, $classname);       
        foreach ($loadDir as $dir) {            
            $file = $dir . $classname . '.php';
            $file = str_replace('//', $separator, $file);//防止出现dir//dir格式            
            if (file_exists($file)) {                
                require_once ($file);
                return true;
            }
        }
        return false;
    }
}

?>